/*
 Color animation jQuery-plugin
 http://www.bitstorm.org/jquery/color-animation/
 Copyright 2011 Edwin Martin <edwin@bitstorm.org>
 Released under the MIT and GPL licenses.
 */
(function(d) {
	function i() {
		var b = d("script:first"), a = b.css("color"), c = false;
		if (/^rgba/.test(a))
			c = true;
		else
			try {
				c = a != b.css("color", "rgba(0, 0, 0, 0.5)").css("color");
				b.css("color", a)
			} catch (e) {
			}
		return c
	}
	function g(b, a, c) {
		var e = "rgb" + (d.support.rgba ? "a" : "") + "("
				+ parseInt(b[0] + c * (a[0] - b[0]), 10) + ","
				+ parseInt(b[1] + c * (a[1] - b[1]), 10) + ","
				+ parseInt(b[2] + c * (a[2] - b[2]), 10);
		if (d.support.rgba)
			e += "," + (b && a ? parseFloat(b[3] + c * (a[3] - b[3])) : 1);
		e += ")";
		return e
	}
	function f(b) {
		var a, c;
		if (a = /#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(b))
			c = [ parseInt(a[1], 16), parseInt(a[2], 16), parseInt(a[3], 16), 1 ];
		else if (a = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(b))
			c = [ parseInt(a[1], 16) * 17, parseInt(a[2], 16) * 17,
					parseInt(a[3], 16) * 17, 1 ];
		else if (a = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/
				.exec(b))
			c = [ parseInt(a[1]), parseInt(a[2]), parseInt(a[3]), 1 ];
		else if (a = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9\.]*)\s*\)/
				.exec(b))
			c = [ parseInt(a[1], 10), parseInt(a[2], 10), parseInt(a[3], 10),
					parseFloat(a[4]) ];
		return c
	}
	d.extend(true, d, {
		support : {
			rgba : i()
		}
	});
	var h = [ "color", "backgroundColor", "borderBottomColor",
			"borderLeftColor", "borderRightColor", "borderTopColor",
			"outlineColor" ];
	d.each(h, function(b, a) {
		d.fx.step[a] = function(c) {
			if (!c.init) {
				c.a = f(d(c.elem).css(a));
				c.end = f(c.end);
				c.init = true
			}
			c.elem.style[a] = g(c.a, c.end, c.pos)
		}
	});
	d.fx.step.borderColor = function(b) {
		if (!b.init)
			b.end = f(b.end);
		var a = h.slice(2, 6);
		d.each(a, function(c, e) {
			b.init || (b[e] = {
				a : f(d(b.elem).css(e))
			});
			b.elem.style[e] = g(b[e].a, b.end, b.pos)
		});
		b.init = true
	}
})(jQuery);
